package chapter02;

public class RemoveDuplicates80 {
    /**
     * 双指针
     * len=0 整理后数组长度
     * i=0 遍历原数组
     * 每个数字最多出现两次 为了记录数字是否出现不只一次 添加一个变量flag 初始flag=false
     * 循环条件 i<nums.length
     *  去重
     *      如果 i+1<nums.length&&nums[i]==nums[i+1]
     *          i++
     *          修改flag=true
     *  如果flag==true
     *      nums[len++]=nums[i]
     *  添加去重后数字
     *      nums[len++]=nums[i++]
     * 循环结束后len就是去重后长度
     */
    public int removeDuplicates(int[] nums) {
        int len=0;
        int i=0;
        boolean flag=false;
        while (i<nums.length){
            while (i+1<nums.length&&nums[i]==nums[i+1]){
                flag=true;
                i++;
            }
            if(flag){
                flag=false;
                nums[len++]=nums[i];
            }
            nums[len++]=nums[i++];
        }
        return len;
    }
}
